﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;

namespace Atlandiz.EnvanterVeZimmetYonetimi
{
    public partial class AnalizEnvanter : DevExpress.XtraEditors.XtraForm
    {
        public static DataTable ds;
        public static string Bilgi = "Filtreleri kullanarak çok boyutlu analiz için raporu düzenleyebilirsiniz. ";

        public AnalizEnvanter()
        {
            InitializeComponent();
        }

        private void AnalizEnvanter_Load(object sender, EventArgs e)
        {
            RaporIcinGrup.Text = "Üst Menüden Analiz Seçin..";
            progress.MarqueeAnimationSpeed = 25;
            progress.Stopped = true;

            RaporGridView.ShowCustomization();
            RaporGridView.CustomizationForm.Location = new System.Drawing.Point((RaporGrid.Location.X + RaporGrid.Width) - 10, (RaporGrid.Location.Y + RaporGrid.Height) - 50);

            try
            {
                ds.Rows.Clear();
            }
            catch (Exception)
            {
            }

        }

        private void BWRaporYazilim_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                String Sorgu = "SELECT DISTINCT\n" +
                    "Tedarikci.tFirmaUnvan [TEDARİKÇİ],\n" +
                    "Depolar.DepoAdi [DEPO ADI],\n" +
                    "YazilimUretici.yuFirmaUnvan [ÜRETİCİ],\n" +
                    "YazilimIsim.yiAdi [YAZILIM],\n" +
                    "YazilimSurum.ySurum [SÜRÜM],\n" +
                    "Yazilim.LisTuru [LİSANS TÜRÜ], \n" +
                    "Yazilim.LisansNo [LİSANS/SERİ NO],\n" +
                    "Yazilim.Aciklama [AÇIKLAMA],\n" +
                    "Yazilim.EnvanterGirisTarihi [ENVANTER GİRİŞ TARİHİ], \n" +
                    "Yazilim.LisBasTarih [LİSANS BAŞ.TARİHİ],\n" +
                    "Yazilim.LisBitTarih [LİSANS BİT.TARİHİ],\n" +
                    "Yazilim.Maliyet [MALİYET DEĞERİ],\n" +
                    "Yazilim.ZimmetDegeri [ZİMMET DEĞERİ],\n" +
                    "Yazilim.MaliyetDoviz [MALİYET DÖVİZ],\n" +
                    "Yazilim.ZimmetDegeriDoviz [ZİMMET DEĞERİ DÖVİZ]\n" +
                    "FROM Yazilim\n" +
                    "LEFT JOIN YazilimIsim ON Yazilim.yiID = YazilimIsim.yiID\n" +
                    "LEFT JOIN YazilimSurum ON Yazilim.ysID = YazilimSurum.ysID\n" +
                    "LEFT JOIN Depolar ON Yazilim.DepoId = Depolar.id\n" +
                    "LEFT JOIN YazilimUretici ON Yazilim.yuID = YazilimUretici.yuID\n" +
                    "LEFT JOIN Tedarikci ON Yazilim.tID = Tedarikci.tID\n" +
                    "WHERE (Yazilim.isDeleted = 0)\n";

                ds = Army.SQL().GetDataTable(Sorgu);

            }
            catch (Exception)
            {

            }
        }

        private void BWRaporYazilim_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            try
            {
                if (ds.Rows.Count > 0)
                {
                    RaporGridView.Columns.Clear();
                    RaporGrid.DataSource = ds;
                    RaporGridView.GroupSummary.Clear();
                    RaporGridView.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways;

                    RaporGridView.Columns["ENVANTER GİRİŞ TARİHİ"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                    RaporGridView.Columns["ENVANTER GİRİŞ TARİHİ"].DisplayFormat.FormatString = "{0:dd/MM/yyyy}";
                    RaporGridView.Columns["LİSANS BAŞ.TARİHİ"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                    RaporGridView.Columns["LİSANS BAŞ.TARİHİ"].DisplayFormat.FormatString = "{0:dd/MM/yyyy}";
                    RaporGridView.Columns["LİSANS BİT.TARİHİ"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                    RaporGridView.Columns["LİSANS BİT.TARİHİ"].DisplayFormat.FormatString = "{0:dd/MM/yyyy}";

                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "DEPO ADI");
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "DEPO ADI", RaporGridView.Columns["DEPO ADI"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "ÜRETİCİ", RaporGridView.Columns["ÜRETİCİ"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "YAZILIM", RaporGridView.Columns["YAZILIM"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "SÜRÜM", RaporGridView.Columns["SÜRÜM"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "LİSANS TÜRÜ", RaporGridView.Columns["LİSANS TÜRÜ"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Min, "ENVANTER GİRİŞ TARİHİ", RaporGridView.Columns["ENVANTER GİRİŞ TARİHİ"], "İlk {0:dd/MM/yyyy}");
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "MALİYET DEĞERİ", RaporGridView.Columns["MALİYET DEĞERİ"], "Toplam {0:n2}");
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "ZİMMET DEĞERİ", RaporGridView.Columns["ZİMMET DEĞERİ"], "Toplam {0:n2}");


                    RaporGridView.Columns["DEPO ADI"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count;
                    RaporGridView.Columns["DEPO ADI"].SummaryItem.DisplayFormat = "Toplam = {0:n}";
                    RaporGridView.Columns["MALİYET DEĞERİ"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
                    RaporGridView.Columns["MALİYET DEĞERİ"].SummaryItem.DisplayFormat = "Toplam = {0:n}";
                    RaporGridView.Columns["ZİMMET DEĞERİ"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
                    RaporGridView.Columns["ZİMMET DEĞERİ"].SummaryItem.DisplayFormat = "Toplam = {0:n}";

                    RaporGridView.Columns["AÇIKLAMA"].Visible = false;
                    RaporGridView.Columns["LİSANS BAŞ.TARİHİ"].Visible = false;
                    RaporGridView.Columns["LİSANS BİT.TARİHİ"].Visible = false;
                    RaporGridView.Columns["ZİMMET DEĞERİ"].Visible = false;
                    RaporGridView.Columns["ZİMMET DEĞERİ DÖVİZ"].Visible = false;

                    foreach (DevExpress.XtraGrid.Columns.GridColumn x in RaporGridView.Columns)
                    {
                        x.OptionsFilter.FilterPopupMode = DevExpress.XtraGrid.Columns.FilterPopupMode.CheckedList;
                        x.OptionsColumn.AllowIncrementalSearch = true;
                        x.OptionsColumn.AllowEdit = false;
                    }

                    RaporGridView.BestFitColumns();

                    //PivotAnaliz.BeginUpdate();
                    //PivotAnaliz.DataSource = ds;
                    //PivotAnaliz.RetrieveFields();
                    //PivotAnaliz.EndUpdate();

                    //PivotAnaliz.Fields["MALİYET DEĞERİ"].CellFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                    //PivotAnaliz.Fields["MALİYET DEĞERİ"].CellFormat.FormatString = "{0:n}";                

                    //PivotAnaliz.Fields["ZİMMET DEĞERİ"].CellFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                    //PivotAnaliz.Fields["ZİMMET DEĞERİ"].CellFormat.FormatString = "{0:n}";

                    //PivotAnaliz.Fields["ÜRETİCİ"].Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;
                    //PivotAnaliz.Fields["YAZILIM"].Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;
                    //PivotAnaliz.Fields["SÜRÜM"].Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;
                    //PivotAnaliz.Fields["LİSANS TÜRÜ"].Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;
                    //PivotAnaliz.Fields["LİSANS/SERİ NO"].Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;
                    //PivotAnaliz.Fields["ENVANTER GİRİŞ TARİHİ"].Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;

                    //PivotAnaliz.Fields["MALİYET DEĞERİ"].Area = DevExpress.XtraPivotGrid.PivotArea.DataArea;
                    //PivotAnaliz.Fields["ZİMMET DEĞERİ"].Area = DevExpress.XtraPivotGrid.PivotArea.DataArea;

                    //PivotAnaliz.Fields["MALİYET DÖVİZ"].Visible = false;
                    //PivotAnaliz.Fields["ZİMMET DEĞERİ DÖVİZ"].Visible = false;
                }
            }
            catch (Exception)
            {

            }
            progress.Stopped = true;
        }

        private void BWRaporDonanim_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                String Sorgu = "SELECT DISTINCT\n" +
                    "Tedarikci.tFirmaUnvan [TEDARİKÇİ],\n" +
                    "Depolar.DepoAdi [DEPO ADI],\n" +
                    "CihazTur.ChzTur [GRUP],\n" +
                    "CihazMarka.ChzMarka [MARKA],\n" +
                    "CihazModel.ChzModel [MODEL],\n" +
                    "Cihaz.ServisTag [SERVİS TAG], \n" +
                    "Cihaz.SeriNoIMEI [SERİ NO/IMEI],\n" +
                    "Cihaz.Aciklama [AÇIKLAMA],\n" +
                    "Cihaz.cAlimTarihi [ENVANTER GİRİŞ TARİHİ],\n" +
                    "Cihaz.Maliyet [MALİYET DEĞERİ],\n" +
                    "Cihaz.ZimmetDegeri [ZİMMET DEĞERİ],\n" +
                    "Cihaz.MaliyetDoviz [MALİYET DÖVİZ],\n" +
                    "Cihaz.ZimmetDegeriDoviz [ZİMMET DEĞERİ DÖVİZ]\n" +
                    "FROM Cihaz\n" +
                    "LEFT JOIN CihazTur ON Cihaz.ctID = CihazTur.ctID\n" +
                    "LEFT JOIN Tedarikci ON Cihaz.tID = Tedarikci.tID\n" +
                    "LEFT JOIN Depolar ON Cihaz.DepoId = Depolar.id\n" +
                    "LEFT JOIN CihazModel ON Cihaz.cmdID = CihazModel.cmdID\n" +
                    "LEFT JOIN CihazMarka ON Cihaz.cmID = CihazMarka.cmID\n" +
                    "WHERE (Cihaz.isDeleted = 0)\n";
                ds = Army.SQL().GetDataTable(Sorgu);
            }
            catch (Exception)
            {
            }
        }

        private void BWRaporDonanim_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            try
            {
                if (ds.Rows.Count > 0)
                {
                    RaporGridView.Columns.Clear();
                    RaporGrid.DataSource = ds;
                    RaporGridView.GroupSummary.Clear();
                    RaporGridView.GroupFooterShowMode = GroupFooterShowMode.VisibleAlways;

                    RaporGridView.Columns["ENVANTER GİRİŞ TARİHİ"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
                    RaporGridView.Columns["ENVANTER GİRİŞ TARİHİ"].DisplayFormat.FormatString = "{0:dd/MM/yyyy}";

                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "DEPO ADI");
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "DEPO ADI", RaporGridView.Columns["DEPO ADI"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "GRUP", RaporGridView.Columns["GRUP"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "MARKA", RaporGridView.Columns["MARKA"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "MODEL", RaporGridView.Columns["MODEL"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Count, "SERVİS TAG", RaporGridView.Columns["SERVİS TAG"]);
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Min, "ENVANTER GİRİŞ TARİHİ", RaporGridView.Columns["ENVANTER GİRİŞ TARİHİ"], "İlk {0:dd/MM/yyyy}");
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "MALİYET DEĞERİ", RaporGridView.Columns["MALİYET DEĞERİ"], "Toplam {0:n2}");
                    RaporGridView.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, "ZİMMET DEĞERİ", RaporGridView.Columns["ZİMMET DEĞERİ"], "Toplam {0:n2}");

                    RaporGridView.Columns["DEPO ADI"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count;
                    RaporGridView.Columns["DEPO ADI"].SummaryItem.DisplayFormat = "Toplam = {0:n}";
                    RaporGridView.Columns["MALİYET DEĞERİ"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
                    RaporGridView.Columns["MALİYET DEĞERİ"].SummaryItem.DisplayFormat = "Toplam = {0:n}";
                    RaporGridView.Columns["ZİMMET DEĞERİ"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
                    RaporGridView.Columns["ZİMMET DEĞERİ"].SummaryItem.DisplayFormat = "Toplam = {0:n}";

                    RaporGridView.Columns["AÇIKLAMA"].Visible = false;
                    RaporGridView.Columns["ZİMMET DEĞERİ"].Visible = false;
                    RaporGridView.Columns["ZİMMET DEĞERİ DÖVİZ"].Visible = false;

                    foreach (DevExpress.XtraGrid.Columns.GridColumn x in RaporGridView.Columns)
                    {
                        x.OptionsFilter.FilterPopupMode = DevExpress.XtraGrid.Columns.FilterPopupMode.CheckedList;
                        x.OptionsColumn.AllowIncrementalSearch = true;
                        x.OptionsColumn.AllowEdit = false;
                    }

                    RaporGridView.BestFitColumns();
                }
            }
            catch (Exception)
            {

            }
            progress.Stopped = true;
        }

        private void _btnDonanimEnvanteri_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            _btnDonanimEnvanteri.Enabled = false;
            RaporIcinGrup.Text = Bilgi + "(Donanım Envanter Analizi)";
            BWRaporDonanim.RunWorkerAsync();
            progress.Stopped = false;
            _btnDonanimEnvanteri.Enabled = true;
        }

        private void _btnYazilimEnvanteri_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            _btnYazilimEnvanteri.Enabled = false;
            RaporIcinGrup.Text = Bilgi + "(Yazılım Envanter Analizi)";
            BWRaporYazilim.RunWorkerAsync();
            progress.Stopped = false;
            _btnYazilimEnvanteri.Enabled = true;
        }

        private void _btnExceleAktar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                if (ds.Rows.Count > 0)
                {
                    KaydetDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                    KaydetDialog.FileName = "";
                    KaydetDialog.Filter = "Excel (*.xlsx)|*.xlsx";
                    KaydetDialog.FilterIndex = 1;
                    KaydetDialog.RestoreDirectory = true;

                    if (KaydetDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        RaporGridView.ExportToXlsx(KaydetDialog.FileName);
                    }
                }
            }
            catch (Exception)
            {
            }
        }

        private void _btnYazdir_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                if (ds.Rows.Count > 0) RaporGridView.ShowPrintPreview();
            }
            catch (Exception)
            {
            }
        }

        private void _btnKapat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.Close();
        }

        private void _btnPdfOlarakKaydet_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                if (ds.Rows.Count > 0)
                {
                    KaydetDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                    KaydetDialog.FileName = "";
                    KaydetDialog.Filter = "Pdf Dosyası (*.pdf)|*.pdf";
                    KaydetDialog.FilterIndex = 1;
                    KaydetDialog.RestoreDirectory = true;

                    if (KaydetDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        RaporGridView.ExportToPdf(KaydetDialog.FileName);
                    }
                }
            }
            catch (Exception)
            {
            }
        }
    }
}